package com.office.map;

import org.junit.Test;

import java.util.*;

/**
 * Java 容器 Map Collection
 */

public class MapUtils {

    @Test
    public void listTest() {
        /**
         * 元素有序且可重复
         */
        List<String> strings = new ArrayList<String>() {
            {
                add("1");
                add("2");
                add("2");
                add("3");
            }
        };
        strings.stream().filter((i) -> (i.equals("2"))).forEach((i) -> System.out.println(i));

        /**
         * HashMap 源码分析
         * 元素无序  key值唯一value可重复
         * TreeMap元素有序
         */
        Map map=new HashMap();
        map.put(null,null);

        //衍生HashMap和HashTable
        //1、HashMap 运行 key 和 value 为 null，而 Hashtable 不允许。
        //2、Hashtable 是线程安全的，而 HashMap 是非线程安全的。
        //3、在 Hashtable 的类注释可以看到，Hashtable 是保留类不建议使用，
        // 推荐在单线程环境下使用 HashMap 替代，如果需要多线程使用则用 ConcurrentHashMap 替代
        Hashtable hashtable=new Hashtable();

        /**
         * 元素无序 不允许重复
         * TreeSet元素有序
         */
        Set set=new HashSet();


        List<String> list = new ArrayList<>();
        list. add("x");
        /**
         * 这里是保证只读
         */
        Collection<String> clist = Collections. unmodifiableCollection(list);
        clist. add("y"); // 运行时此行报错
        System. out. println(list. size());
    }
}
